package com.dingwen.treasure.core.annotation;

import com.dingwen.treasure.base.enums.OperateTypeEnum;
import com.dingwen.treasure.base.constant.ServerConstant;

import java.lang.annotation.*;

/**
 * 日志记录操作: XXX模块，XXX时间XXX对XXX资源做了XXX操作 请求参数，操作结果 成功｜失败（方法执行返回值），详细信息如下 </br>
 *
 * @author dingwen
 * @date 2022/06/05
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface OperationLogRecord {


    /**
     * 方法唯一表示标识
     *
     * @return {@link String}
     */
    String methodKey() default "";


    /**
     * 模块
     *
     * @return {@link String}
     */
    String module() default ServerConstant.TREASURE;

    /**
     * 请求参数 (json)
     *
     * @return {@link String}
     */
    boolean request() default true;


    /**
     * 资源名称 : 默认获取 @ApiOperation的value值
     *
     * @return {@link String}
     */
    String resourceName() default "";


    /**
     * 业务主键: 默认是用户ID
     *
     * @return {@link String}
     */
    String id();

    /**
     * 操作类型： {@link OperateTypeEnum}（后期可配置实现开启哪些日志记录）
     *
     * @return {@link String}
     */
    OperateTypeEnum operateType() default OperateTypeEnum.OTHER;

    /**
     * 是否存储方法执行详细返回值
     *
     * @return {@link String}
     */
    boolean detail() default false;

}
